React Suspense och FelgrÀnser: Avancerad laddnings- och felhantering | MLOG | MLOG}> ); }; export default App;

I detta exempel:

FörstÄ felgrÀnser

FelgrÀnser Àr React-komponenter som fÄngar JavaScript-fel var som helst i deras underkomponenttrÀd, loggar dessa fel och visar ett fallback-UI istÀllet för att krascha hela applikationen. De ger ett sÀtt att hantera ovÀntade fel pÄ ett elegant sÀtt, vilket förbÀttrar anvÀndarupplevelsen och gör din applikation mer robust.

Nyckelbegrepp för felgrÀnser

GrundlÀggande implementering av felgrÀnser

HÀr Àr ett enkelt exempel pÄ hur du skapar en felgrÀns:


import React, { Component } from 'react';

class ErrorBoundary extends Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  static getDerivedStateFromError(error) {
    // Uppdatera tillstÄndet sÄ att nÀsta rendering visar fallback-UI:t.
    return { hasError: true };
  }

  componentDidCatch(error, errorInfo) {
    // Du kan ocksÄ logga felet till en felrapporteringstjÀnst
    console.error(error, errorInfo);
  }

  render() {
    if (this.state.hasError) {
      // Du kan rendera valfritt anpassat fallback-UI
      return 

NÄgot gick fel.

; } return this.props.children; } } export default ErrorBoundary;

I detta exempel:

AnvÀnda felgrÀnser

För att anvÀnda komponenten `ErrorBoundary`, omslut helt enkelt de komponenter som du vill skydda med den:


import React from 'react';
import ErrorBoundary from './ErrorBoundary';

const MyComponent = () => {
  // Simulera ett fel
  throw new Error('Ett fel uppstod!');
};

const App = () => {
  return (
    
      
    
  );
};

export default App;

I detta exempel, om ett fel uppstÄr i `MyComponent`, kommer komponenten `ErrorBoundary` att fÄnga felet och visa fallback-UI:t.

Kombinera Suspense och felgrÀnser

Suspense och felgrÀnser kan kombineras för att tillhandahÄlla en robust och omfattande felhanteringsstrategi för asynkrona operationer. Genom att omsluta komponenter som kan suspendas med bÄde Suspense och felgrÀnser, kan du hantera bÄde laddningstillstÄnd och ovÀntade fel pÄ ett elegant sÀtt.

Exempel pÄ att kombinera Suspense och felgrÀnser


import React, { Suspense } from 'react';
import ErrorBoundary from './ErrorBoundary';

// Simulera hÀmtning av data (t.ex. frÄn ett API)
const fetchData = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      // Simulera en lyckad datahÀmtning
      // resolve({ name: 'John Doe', age: 30 });

      // Simulera ett fel under datahÀmtning
      reject(new Error('Misslyckades med att hÀmta anvÀndardata'));

    }, 2000);
  });
};

// Skapa en resurs som Suspense kan anvÀnda
const createResource = (promise) => {
  let status = 'pending';
  let result;
  let suspender = promise().then(
    (r) => {
      status = 'success';
      result = r;
    },
    (e) => {
      status = 'error';
      result = e;
    }
  );

  return {
    read() {
      if (status === 'pending') {
        throw suspender;
      } else if (status === 'error') {
        throw result;
      }

      return result;
    },
  };
};

const userData = createResource(fetchData);

// Komponent som lÀser frÄn resursen
const UserProfile = () => {
  const data = userData.read();
  return (
    

Name: {data.name}

Age: {data.age}

); }; const App = () => { return ( Loading user data...}> ); }; export default App;

I detta exempel:

Avancerade tekniker och bÀsta praxis

Optimera Suspense-prestanda

Anpassade felgrÀnser

Du kan skapa anpassade felgrÀnser för att hantera specifika typer av fel eller för att tillhandahÄlla mer informativ felmeddelanden. Du kan till exempel skapa en felgrÀns som visar ett annat fallback-UI baserat pÄ vilken typ av fel som intrÀffade.

Server-Side Rendering (SSR) med Suspense

Suspense kan anvÀndas med Server-Side Rendering (SSR) för att förbÀttra den initiala sidladdningsprestandan. NÀr du anvÀnder SSR kan du förrendera det initiala tillstÄndet för din applikation pÄ servern och sedan strömma det ÄterstÄende innehÄllet till klienten. Suspense tillÄter dig att hantera asynkron datahÀmtning under SSR och att visa laddningsindikatorer medan data strömmas.

Hantera olika felscenarier

ÖvervĂ€g dessa olika felscenarier och hur du hanterar dem:

Global felhantering

Implementera en global felhanteringsmekanism för att fÄnga fel som inte fÄngas av felgrÀnser. Detta kan göras genom att anvÀnda en global felhanterare eller genom att omsluta hela applikationen i en felgrÀns.

Verkliga exempel och anvÀndningsfall

E-handelsapplikation

I en e-handelsapplikation kan Suspense anvÀndas för att visa laddningsindikatorer medan produktdata hÀmtas, och felgrÀnser kan anvÀndas för att hantera fel som uppstÄr under utcheckningsprocessen. FörestÀll dig till exempel en anvÀndare frÄn Japan som blÀddrar i en onlinebutik som ligger i USA. Produktbilder och beskrivningar kan ta lite tid att ladda. Suspense kan visa en enkel laddningsanimation medan dessa data hÀmtas frÄn en server som eventuellt ligger halvvÀgs runt jorden. Om betalningsgatewayn misslyckas pÄ grund av ett tillfÀlligt nÀtverksproblem (vanligt i olika internetinfrastrukturer globalt), kan en felgrÀns visa ett anvÀndarvÀnligt meddelande som uppmanar dem att försöka igen senare.

Social medieplattform

I en social medieplattform kan Suspense anvÀndas för att visa laddningsindikatorer medan anvÀndarprofiler och inlÀgg hÀmtas, och felgrÀnser kan anvÀndas för att hantera fel som uppstÄr nÀr bilder eller videor lÀses in. En anvÀndare som surfar frÄn Indien kan uppleva lÄngsammare laddningstider för media som hostas pÄ servrar i Europa. Suspense kan visa en platshÄllare tills innehÄllet Àr fullstÀndigt laddat. Om en viss anvÀndares profildata Àr korrupt (sÀllsynt men möjligt), kan en felgrÀns förhindra att hela det sociala medieflödet kraschar och visa ett enkelt felmeddelande som "Det gick inte att lÀsa in anvÀndarprofilen" istÀllet.

Dashboard-applikation

I en dashboard-applikation kan Suspense anvÀndas för att visa laddningsindikatorer medan data hÀmtas frÄn flera kÀllor, och felgrÀnser kan anvÀndas för att hantera fel som uppstÄr nÀr diagram eller grafer lÀses in. En finansanalytiker i London som har tillgÄng till en global investeringsdashboard kan ladda data frÄn flera börser runt om i vÀrlden. Suspense kan tillhandahÄlla laddningsindikatorer för varje datakÀlla. Om ett börs-API Àr nere, kan en felgrÀns visa ett felmeddelande specifikt för den börsens data, vilket förhindrar att hela dashboarden blir oanvÀndbar.

Slutsats

React Suspense och felgrÀnser Àr viktiga verktyg för att bygga motstÄndskraftiga och anvÀndarvÀnliga React-applikationer. Genom att anvÀnda Suspense för att hantera laddningstillstÄnd och felgrÀnser för att hantera ovÀntade fel, kan du förbÀttra den övergripande anvÀndarupplevelsen och förenkla utvecklingsprocessen. Den hÀr guiden har gett en omfattande översikt över Suspense och felgrÀnser, och tÀcker allt frÄn grundlÀggande koncept till avancerade tekniker. Genom att följa de bÀsta metoderna som beskrivs i den hÀr artikeln, kan du bygga robusta och pÄlitliga React-applikationer som kan hantera Àven de mest utmanande scenarierna.

NÀr React fortsÀtter att utvecklas kommer Suspense och felgrÀnser sannolikt att spela en allt viktigare roll i att bygga moderna webbapplikationer. Genom att bemÀstra dessa funktioner kan du ligga steget före och leverera exceptionella anvÀndarupplevelser.